﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data;
using BusinessObjects.BO_GetObjects;
using DigiLib;
using System.Data.SqlTypes;

public partial class Administrator_Controls_UsersManager : Admin_Controls_Base {
    protected void Page_Load(object sender, EventArgs e) {
        if (!IsPostBack) {
            LoadData();
        }
    }

    protected void LoadData() {
        try {
            DataTable objDT = BO_cms_users.SelectWithPaged(base.Cur_page(divPager), base.Page_size, 1);
            base.bindRepeater(rptData, objDT, divMessage, divPager, "Hiện tại chưa có thành viên nào. Hãy click vào Thêm quản trị viên mới để tạo quản trị viên!");
        } catch (Exception ex) {
            divMessage.InnerHtml = MessageBox.Error("Lỗi hệ thống", "Phát hiện lỗi sau: " + ex.Message);
        }
    }

    protected void ddlAction_SelectedIndexChanged(object sender, EventArgs e) {
        try {
            string selectedItems = GetSelectedItems(rptData, "chkBox");
            if (String.IsNullOrEmpty(selectedItems)) {
                Javascripts.Alert(Page, "Phải chọn ít nhất 1 quản trị viên!");
                return;
            }
            switch (ddlAction.SelectedValue) {
                case "1":
                    if (BO_cms_users.Delete(selectedItems, ";", 1)) {
                        Javascripts.AlertRefresh(Page, "Đã chuyển các quản trị viên được chọn tới thùng rác!");
                    } else {
                        divMessage.InnerHtml = MessageBox.Error("Lỗi", "Chưa xóa được các quản trị viên đã chọn");
                    }
                    break;
                case "2":
                    if (BO_cms_users.Delete(selectedItems, ";", 2)) {
                        Javascripts.AlertRefresh(Page, "Đã xóa các quản trị viên được chọn!");
                    } else {
                        divMessage.InnerHtml = MessageBox.Error("Lỗi", "Chưa xóa được các quản trị viên đã chọn");
                    }
                    break;
                case "3":
                    if (BO_cms_users.Lock(selectedItems, ";", 1, DateTime.Now, DateTime.Now, "Không có lý do", Administrator.USER_NAME)) {
                        Javascripts.AlertRefresh(Page, "Đã khóa các quản trị viên được chọn. Quản trị viên này sẽ không thể đăng nhập vào hệ thống.");
                    } else {
                        divMessage.InnerHtml = MessageBox.Error("Lỗi", "Chưa khóa được các quản trị viên đã chọn");
                    }
                    break;
                case "4":
                    if (BO_cms_users.Lock(selectedItems, ";", 0, DateTime.Now, DateTime.Now, "Không có lý do", Administrator.USER_NAME)) {
                        Javascripts.AlertRefresh(Page, "Đã mở khóa các quản trị viên được chọn. Quản trị viên này có thể đăng nhập vào hệ thống bình thường.");
                    } else {
                        divMessage.InnerHtml = MessageBox.Error("Lỗi", "Chưa bỏ khóa được các quản trị viên đã chọn");
                    }
                    break;
                default:
                    break;
            }
        } catch (Exception ex) {
            divMessage.InnerHtml = MessageBox.Error("Lỗi", "Chưa xóa được các quản trị viên đã chọn. Chi tiết lỗi như sau: " + ex.Message);
        }
    }

    public string GetSelectedItems(Repeater rpt, string chkBoxId) {
        var selectedValues = string.Empty;

        for (int i = 0; i < rpt.Items.Count; i++) {

            var chkBox = rpt.Items[i].FindControl(chkBoxId) as HtmlInputCheckBox;
            if (chkBox != null && chkBox.Checked)
                selectedValues += chkBox.Value + ";";
        }
        return selectedValues;
    }

    public string DateTimeNullable(string input) {
        if (String.IsNullOrEmpty(input))
            return "Chưa bao giờ đăng nhập";
        return input;
    }
    protected void btnSearch_Click(object sender, EventArgs e) {
        try {
            DataTable objDT = null;
            divPager.InnerHtml = string.Empty;
            divMessage.InnerHtml = string.Empty;

            objDT = BO_cms_users.Filter(base.Cur_page(divPager), base.Page_size, txtKeyword.Value.Trim());
            base.bindRepeater(rptData, objDT, divMessage, divPager, "Không tìm thấy thành viên nào phù hợp với từ khóa \"" + txtKeyword.Value.Trim() + "\"");
        } catch (Exception ex) {
            divMessage.InnerHtml = MessageBox.Error("Lỗi hệ thống", "Phát hiện lỗi sau: " + ex.Message);
        }
    }
}